package demo_leetcode_day;

/*
给定一个字符串，你的任务是计算这个字符串中有多少个回文子串。
具有不同开始位置或结束位置的子串，即使是由相同的字符组成，也会被视作不同的子串。
示例 1：
输入："abc"
输出：3
解释：三个回文子串: "a", "b", "c"
示例 2：
输入："aaa"
输出：6
解释：6个回文子串: "a", "a", "a", "aa", "aa", "aaa"
提示：palindromic) 单词? - 知乎
输入的字符串长度不会超过 1000 。
*/

public class demo_20200819 {
    public static void main(String[] args) {
        System.out.println(new Solution().countSubstrings("aaa"));
    }

    static class Solution {
        public int countSubstrings(String s) {
            int count = 0;
            for (int i = 0; i < s.length(); i++) {
                for (int j = i; j < s.length(); j++) {
                    if (isPalindrome(s, i, j)) {
                        count++;
                    }
                }
            }
            return count;
        }

        /**
         * 回文判断
         */
        public boolean isPalindrome(String s, int left, int right) {
            while (left <= right && left >= 0 && right < s.length()) {
                if (s.charAt(left) != s.charAt(right)) {
                    return false;
                }
                left++;
                right--;
            }
            return true;
        }
    }
}